package com.haier.npt.security.domain;

import java.util.Date;

import org.hibernate.validator.constraints.NotEmpty;

import com.baomidou.mybatisplus.annotations.TableField;
import com.baomidou.mybatisplus.annotations.TableId;
import com.baomidou.mybatisplus.annotations.TableName;

/**
 * app 管理
 * @author lixu
 *
 */
@TableName("sys_app")
public class SysApp {
	/**
	 * 主键
	 */
	@TableId
	private Long id ; 
	
	
	/**
	 * 名称
	 */
	@TableField
	@NotEmpty(message = "{security.sys.app.name.not.null}")
	private String name ; 
	
	
	/**
	 * 应用 key（唯一）
	 */
	@TableField
	private String app_key ; 
	
	
	/**
	 * 应用安全码
	 */
	@TableField
	private String app_secret ; 
			
	
	/**
	 * 创建时间
	 */
	@TableField
	private Date createdate ; 
	
	/**
	 * 是否可用
	 */
	@TableField
	private boolean available ; 
	
	
	/**
	 * 过期时间
	 */
	@TableField
	private Date expiredate ;
	
	/**
	 * 是否过期 ，默认为false , true 为过期
	 */
	@TableField(exist=false)
	private boolean expire ; 


	public void setExpire(boolean expire) {
		this.expire = expire;
	}

	public boolean isExpire() {
		//不可用直接返回过期
		if(!available){
			return true ; 
		}
		//获取过期时间，如果过期时间小于当前时间，则标记已经过期
		Date exDate = this.getExpiredate(); 
		if(exDate !=null){
			return  System.currentTimeMillis()  > exDate.getTime() ? true :false  ; 
		}
		return false;
	}

	public Long getId() {
		return id;
	}


	public void setId(Long id) {
		this.id = id;
	}
	

	public boolean isAvailable() {
		return available ;
	}


	public void setAvailable(boolean available) {
		this.available = available;
	}


	public String getName() {
		return name;
	}


	public void setName(String name) {
		this.name = name;
	}


	public String getApp_key() {
		return app_key;
	}


	public void setApp_key(String app_key) {
		this.app_key = app_key;
	}


	public String getApp_secret() {
		return app_secret;
	}


	public void setApp_secret(String app_secret) {
		this.app_secret = app_secret;
	}


	public Date getCreatedate() {
		return createdate;
	}


	public void setCreatedate(Date createdate) {
		this.createdate = createdate;
	}


	public Date getExpiredate() {
		return expiredate;
	}


	public void setExpiredate(Date expiredate) {
		this.expiredate = expiredate;
	} 
	
	
}
